1. Field of the Invention
The present invention relates to computer systems using information buses to interface a central processor(s), random access memory and input-output peripherals together, and more particularly, in utilizing the same logic circuit as a bus bridge for either a fault-tolerant accelerated graphics port (AGP) bus or a fault-tolerant peripheral component interconnect (PCI) bus.
2. Description of the Related Art
Use of computers, especially personal computers, in business and at home is becoming more and more pervasive because the computer has become an integral tool of most information workers who work in the fields of accounting, law, engineering, insurance, services, sales and the like. Rapid technological improvements in the field of computers have opened up many new applications heretofore unavailable or too expensive for the use of older technology mainframe computers. These personal computers may be used as stand-alone workstations (high end individual personal computers) or linked together in a network by a “network server” which is also a personal computer which may have a few additional features specific to its purpose in the network. The network server may be used to store massive amounts of data, and may facilitate interaction of the individual workstations connected to the network for electronic mail (“E-mail”), document databases, video teleconferencing, whiteboarding, integrated enterprise calendar, virtual engineering design and the like. Multiple network servers may also be interconnected by local area networks (“LAN”) and wide area networks (“WAN”).
A significant part of the ever increasing popularity of the personal computer, besides its low cost relative to just a few years ago, is its ability to run sophisticated programs and perform many useful and new tasks. Personal computers today may be easily upgraded with new peripheral devices for added flexibility and enhanced performance. A major advance in the performance of personal computers (both workstation and network servers) has been the implementation of sophisticated peripheral devices such as video graphics adapters, local area network interfaces, SCSI bus adapters, full motion video, redundant error checking and correcting disk arrays, and the like. These sophisticated peripheral devices are capable of data transfer rates approaching the native speed of the computer system microprocessor central processing unit (“CPU”). The peripheral devices' data transfer speeds are achieved by connecting the peripheral devices to the microprocessor(s) and associated system random access memory through high speed expansion local buses. Most notably, a high speed expansion local bus standard has emerged that is microprocessor independent and has been embraced by a significant number of peripheral hardware manufacturers and software programmers. This high speed expansion bus standard is called the “Peripheral Component Interconnect” or “PCI.” A more complete definition of the PCI local bus may be found in the PCI Local Bus Specification, revision 2.1; PCI/PCI Bridge Specification, revision 1.0; PCI System Design Guide, revision 1.0; PCI BIOS Specification, revision 2.1, and Engineering Change Notice (“ECN”) entitled “Addition of “New Capabilities” Structure,” dated May 20, 1996, the disclosures of which are hereby incorporated by reference. Enhancements to the PCI Local Bus Specification may be found in the “PCI-X Addendum to the PCI Local Bus Specification, Revision 1.0,” dated Sep. 22, 1999, the disclosure of which is hereby incorporated by reference. These PCI specifications and ECN are available from the PCI Special Interest Group, P.O. Box 14070, Portland, Oreg. 97214.
A computer system uses a plurality of information (data and address) buses such as a host bus, a memory bus, at least one high speed expansion local bus (such as the PCI bus), and other peripheral buses such as the Small Computer System Interface (SCSI), Extension to Industry Standard Architecture (EISA), and Industry Standard Architecture (ISA). The microprocessor(s) (CPU) of the computer system communicates with main memory and with the peripherals that make up the computer system over these various buses. The microprocessor(s) communicate(s) to the main memory over a host bus to memory bus bridge. The main memory generally communicates over a memory bus through a cache memory bridge to the CPU host bus. The peripherals, depending on their data transfer speed requirements, are connected to the various buses which are connected to the microprocessor host bus through bus bridges that detect required actions, arbitrate, and translate both data and addresses between the various buses.
The choices available for the various computer system bus structures and devices residing on these buses are relatively flexible and may be organized in a number of different ways. One of the more desirable features of present day personal computer systems is their flexibility and ease in implementing custom solutions for users having widely different requirements. Slower peripheral devices may be connected to the ISA or EISA bus(es), other peripheral devices, such as disk and tape drives may be connected to a SCSI bus, and the fastest peripheral devices such as network interface cards (NICs) and video graphics controllers may require connection to the PCI bus. Information transactions on the PCI bus may operate at 33 MHz or 66 MHz clock rates and may be either 32 or 64-bit transactions. Transactions on the PCI-X bus may operate at 66 MHz or 133 MHz clock rates and may be either 32 or 64-bit transactions.
The PCI and PCI-X Specifications support a high 32 bit bus, referred to as the 64 bit extension to the standard low 32 bit bus. The 64 bit bus provides additional data bandwidth for PCI or PCI-X devices that require it. The high 32 bit extension for 64 bit devices requires an additional 39 signal pins: REQ64#, ACK64#, AD[63:32], C/BE[7:4]#, and PAR64. These signals are defined more fully in the PCI and PCI-X Specifications incorporated by reference hereinabove. Thirty-two bit PCI or PCI-X devices work unmodified with 64 bit PCI or PCI-X devices. A 64 bit PCI or PCI-X device must default to 32-bit operation unless a 64-bit transaction is negotiated. Sixty-four bit transactions on the PCI or PCI-X bus are dynamically negotiated (once per transaction) between the master and target PCI devices. This is accomplished by the master asserting REQ64# and the target responding to the asserted REQ64# by asserting ACK64#.
Once a 64 bit transaction is negotiated, it holds until the end of the transaction. Signals REQ64# and ACK64# are externally pulled up by pull up resistors to ensure proper behavior when mixing 32-bit and 64-bit devices on the PCI or PCI-X bus. A central resource controls the state of REQ64# to inform the 64-bit device that it is connected to a 64-bit bus. If REQ64# is deasserted when RST# is deasserted, the device is not connected to a 64-bit bus. If REQ64# is asserted when RST# is deasserted, the device is connected to a 64-bit bus.
In addition to the advent of the high speed expansion bus, increasingly sophisticated microprocessors have revolutionized the role of the personal computer by enabling complex application software to run at mainframe computer speeds. The latest micro-processors have brought the level of technical sophistication to personal computers that, just a few years ago, was available only in mainframe computer systems. Some representative examples of these new microprocessors are the “PENTIUM” and “PENTIUM PRO” (registered trademarks of Intel Corporation). Advanced microprocessors also are manufactured by Advanced Micro Devices, Cyrix, IBM, Digital Equipment Corporation, and Motorola.
The sophisticated microprocessors have, in turn, made possible running complex application programs using advanced three dimensional (“3-D”) graphics for computer aided drafting and manufacturing, engineering simulations, games, etc. Increasingly complex 3D graphics require higher speed access to ever larger amounts of graphics data stored in memory. This memory may be part of the video graphics processor system, but preferably, would be best (lowest cost) if part of the main computer system memory. Intel Corporation has proposed a low cost but improved 3-D graphics standard called the “Accelerated Graphics Port” (AGP) initiative.
The Intel AGP 3-D graphics standard defines a high speed data pipeline, or “AGP bus,” between the graphics controller and system memory. The Intel AGP graphics standard is a specification which provides signal, protocol, electrical, and mechanical specifications for the AGP bus and devices attached thereto. This specification is entitled “Accelerated Graphics Port Interface Specification, Revision 1.0,” dated Jul. 31, 1996, the disclosure of which is hereby incorporated by reference. Enhancements to the AGP 1.0 specification are included in the “Accelerated Graphics Port Interface Specification, Revision 2.0,” dated May 4, 1998, the disclosure of which is hereby incorporated by reference. The AGP specifications are available from Intel Corporation, Santa Clara, Calif.
The AGP 1.0 interface specification uses the 32-bit, 66 MHz PCI (revision 2.1) specification as an operational baseline, with three performance enhancements. These enhancements are 1) a pipeline memory read and write operations, 2) demultiplexing of address and data on the AGP bus by use of sideband signals, and 3) data transfer rates of 133 MHz for data throughput in excess of 500 MB per second. The remaining AGP 1.0 specification does not modify the PCI specification, but rather provides a range of graphics-oriented performance enhancement for use by 3-D graphics hardware and software designers. The AGP 1.0 specification is neither meant to replace nor diminish full use of the PCI standard in the computer system. The AGP 1.0 specification creates an independent and additional high speed local bus for use by 3-D graphics devices such as a graphics controller, wherein the other input/output (“I/O”) devices of the computer system may remain on any combination of the PCI, SCSI, EISA, and ISA buses.
The AGP 2.0 specification supports 64 bit memory addressing, which is beneficial for addressing memory sizes allocated to the AGP device that are larger than 2 GB. The AGP 2.0 specification also includes other enhancements. For example, the AGP 2.0 specification supports 1) 4× transfer mode with low voltage electrical signals that allows four data transfers per 66 MHz clock cycle, providing data throughput of up to 1 GB/sec; 2) five additional sideband signals; 3) a fast write protocol; 4) new input/output buffers; and 5) new mechanical connectors.
To functionally enable an AGP 1.0 or 2.0 graphics bus, new computer system hardware and software are required. At a minimum, this requires new computer system core logic designed to function as a host bus/memory bus/PCI bus to AGP bus bridge meeting the AGP 1.0 or 2.0 specifications. The computer system core logic must still meet the PCI or PCI-X standards referenced above and facilitate interfacing the PCI or PCI-X buses to the remainder of the computer system. This adds additional cost to a personal computer system, but is well worth it if 3-D graphics are utilized. Some personal computer uses such as a network server do not require 3-D graphics, but would greatly benefit from having an additional PCI or PCI-X bus with multiple PCI card slots for accepting additional input/output devices.
In view of the above, it would be desirable to provide a computing system having a core logic chipset configurable for either an AGP bus or an additional PCI bus without requiring different logic and interface circuits for each type of bus.
Many components and connections are required for operation of the features inherent in today's computer systems, thus increasing a potential risk of latent failures. Miniaturization and automated assembly have decreased the cost of computers, but sometimes create these latent malfunctions that occur during operation of the computer system. Typically, printed circuit boards having conductive patterns are used to interconnect integrated circuit packages such as a ball grid array (BGA) using surface mount techniques. There may be hundreds of contacts (tiny solder balls) on a BGA package and each must be properly connected to respective connections of the conductive patterns on the printed circuit boards of the computer system. Some problems that may not be found during manufacture, or that may develop later during operation of the computer system, are shorted or open connections to the contacts of the BGA package. Unless pattern sensitive tests are run, an open connection may appear as the correct logic level, and shorted connections may not be noticed if the same logic level is on the shorted connections. Devices in the integrated circuit packages of the computer system also may either short or open, giving an erroneous signal. Generation and checking of parity is a way of detecting data transmission malfunctions in the computer system.
Parity information may be provided for all PCI/PCI-X/AGP devices that drive address and/or data information onto the address/data (AD[31:0]) bus. The AD[31:0] bus is a time-multiplexed address/data bus. During the address phase of a PCI/PCI-X/AGP transaction, the AD[31:0] bus carries the start address of the transaction. The Command or Byte Enable bus (C/BE#[3:0]), defines the type of transaction to be performed. A Parity signal (PAR) is driven by the initiator one clock after completion of the address phase either high or low to ensure even parity with the AD[31:0] bus and the C/BE#[3:0] bus for a total of 37 bits having an even parity, i.e., the number of logic “1s” on the combined 37 bit bus is an even number.
During the data phase(s) of the PCI/PCI-X/AGP transaction, the AD[31:0] bus is driven by the initiator (during a write transaction) or the currently-addressed target (during a read transaction). The C/BE#[3:0] bus is driven by the initiator to indicate the bytes to be transferred within the currently-addressed doubleword ([31:0]) and the data paths to be used to transfer the data. PAR is driven by either the initiator (during a write transaction) or the currently-addressed target (during a read transaction) so that the combination of AD[31:0], C/BE#[3:0] and PAR (37 bits total) has an even parity (an even number of logic “1s”). For 64 bit data transfers the upper address/data bus AD[61:32]) and C/BE#[7:4], in conjunction with the lower address/data bus AD[31:0] and C/BE#[3:0], are utilized to transfer a quadword (64 bits) of data. An upper Parity signal (PAR64) is used in combination with the AD[61:32] and C/BE#[7:4] buses to represent an even parity across these upper 37 bits.
The bus agent receiving the data (target on a write transaction or initiator on a read transaction) must calculate whether a parity bit should be a logic “1” or a logic “0” to produce an even parity based upon the number of logic “1s” received on the combination of the AD and C/BE buses. If the calculated parity bit does not match the logic value of the asserted PAR or PAR64 for the upper bus, then a parity error has occurred, and a parity error signal (PERR#) may be generated to indicate that a parity error has occurred on either or both of the upper AD[63:32] and CB/E#[7:4] buses, or lower AD[31:0] and CB/E#[3:0] buses during a data phase. PERR# does not indicate which of these buses has the data parity error, however.
To ensure more versatile recovery from faults, it would be desirable to provide an apparatus, method, and system for improving fault tolerance on a 64-bit data-width PCI/PCI-X/AGP bus when either of the upper or lower 32-bit data-width portions of the 64-bit data-width bus may have an operating fault.
The improved fault-tolerance feature may be implemented in conjunction with a core logic chipset that could be configured for either an AGP bus or an additional PCI/PCI-X bus. When the core logic chipset is configured for an AGP bus, and the AGP bus is used for advanced graphics applications, fault tolerance may not be needed and thus may be disabled. However, when the AGP bus is used as a standard I/O bus (e.g., PCI or PCI-X), the fault tolerance features described above will provide for a more robust computer system. Thus, it would be desirable to provide a computer system in which the fault tolerance feature is disabled when the AGP bus is used for advanced 3-D graphics applications, and disabled when the AGP bus is used as a standard I/O bus.